import { take,put,fork,delay,cancel} from 'redux-saga/effects';
import * as actionTypes from './action-types';
function * autoAdd(){
  while(true){
    //产出一个promise,promise在1s后会成功
    yield delay(1000);
    //派发动作对象
    yield put({type:actionTypes.ADD});
  }
}

function * addWatcher(){
  //通过fork开启一个新的后台任务
  const forkTask = yield fork(autoAdd);
  //监听类型为STOP的动作
  yield take(actionTypes.STOP);
  //取消autoAdd的任务
  //cancel也是一个创建指令 的函数，它会告诉 saga中间件停止forkTask任务的执行
  yield cancel(forkTask);
}

function* rootSaga() {
  yield addWatcher();
}
export default rootSaga;